#include <gfunc_spi.h>

// 等待（STAT寄存器的）某个标志位置位。参数中为1的标志位中，任意位为1，便结束。
void spi_wait_stat(spi_qe spi_q, spi_stat_expl_s exp_stat) {
	while (1) {
		spi_stat_expl_s cur_stat = spi_get_stat(spi_q);
		typedef union {
			spi_stat_expl_s s;
			u16_s u;
		} su_u;
		su_u exp_su = {
			.s = exp_stat,
		};
		su_u cur_su = {
			.s = cur_stat,
		};

		// 如果两个STAT有共同置位的标志位，认为通过。
		u32_s has_common = exp_su.u & cur_su.u;
		if (has_common != 0) {
			return;
		}
	}
}
